/**@author lx
 * 卡牌猜姓名
 * 假设游戏者共有十人，且有10个不同的姓：张、王、李、赵、刘、于、许、金、钱、孙，
 * 魔术师将十个姓写在四张纸牌上，游戏者只需指出那几张纸上有自己的姓，魔术师就能准确的说出游戏者的姓。
 */

import java.util.Scanner;
public class Main {
    public static final int MAX_CARD =4;//卡牌数量
    public static void main(String[] args) {

        char[] firstName={+' ','张','王','李','赵','刘','于','许','金','钱','孙'};//从1开始存放
        //分为四组分别代表二进制的四位，第一组为第一位......
        //分组规则：
        // 二进制的的第4位为1的为第1组
        //二进制的的第3位为1的为第2组
        //二进制的的第2位为1的为第3组
        //二进制的的第1位为1的为第4组
        System.out.println(
                "card 1.金 钱 孙\n" +
                "card 2.赵 刘 于 许\n" +
                "card 3.王 李 于 许 孙\n" +
                "card 4.张 李 刘 许 钱");

        int [] num = new int[MAX_CARD];
        System.out.println("请输入含有你姓名的卡牌:(0 退出)\n");
        Scanner scanner = new Scanner(System.in);
        //将含有该姓名的卡牌对应的二进制位置为1；
        for (int i = 0; i < MAX_CARD; i++) {
            int card =scanner.nextInt();
            if(card==0){
                break;
            }
            for (int currentCard = 1; currentCard <= MAX_CARD; currentCard++) {
                if(currentCard==card){
                    num[currentCard-1]=1;
                    break;
                }
            }
        }
        for (int j = 0; j < MAX_CARD; j++) {
            System.out.print(num[j]);
        }
        //现在num数组用二进制存了该姓名在firstName数组所在的位置了，把这个二进制数还原为10进制数即可
        System.out.println();
        int sum=0;
        for (int i = 0; i<MAX_CARD; i++) {
            sum=(int)(sum+num[i]*Math.pow(2,MAX_CARD-i-1));
        }
        System.out.println("你的姓名："+firstName[sum]);
    }
}
//        for (int i = 0; i < maxCard; i++) {
//            int card = scanner.nextInt();
//            if(card==1){
//                num[0]=1;
//            } else if (card==2) {
//                num[1]=1;
//            } else if (card==3) {
//                num[2] =1;
//            } else if (card==4) {
//                num[3]=1;
//            }else{
//                break;
//            }
//        }
 //       int sum = num[0]*8+num[1]*4+num[2]*2+num[3];

